package com.whfc.iot.mach.service;

import com.whfc.hdc.dto.DeviceUpgradeDTO;
import com.whfc.hdc.dto.DeviceUpgradeDataDTO;

import java.io.IOException;

/**
 * @Description:
 * @author: xugcheng
 * @version: 1.0
 * @date: 2019/8/23 15:07
 */
public interface DeviceUpgradeService {

    /**
     * 获取设备的升级策略
     *
     * @param deviceType 硬件类型
     * @param deviceId   硬件ID
     * @param masterVer  主机版本号
     * @param slaveVer   从机版本号
     * @return
     */
    DeviceUpgradeDTO getDeviceUpgrade(Integer deviceType, Integer deviceId, String masterVer, String slaveVer);

    /**
     * 获取硬件主机的升级数据包
     *
     * @param deviceType    硬件类型
     * @param masterOrSlave 主从机
     * @param newVer        新版本号
     * @return
     * @throws IOException
     * @throws InterruptedException
     */
    DeviceUpgradeDataDTO getDeviceUpgradeData(Integer deviceType, Integer masterOrSlave, String newVer) throws IOException, InterruptedException;

    /**
     * 获取硬件主机的升级数据包
     *
     * @param deviceType    硬件类型
     * @param masterOrSlave 主从机
     * @param newVer        新版本号
     * @param subPackageSeq 子包序号
     * @return
     */
    DeviceUpgradeDataDTO getDeviceUpgradeData(Integer deviceType, Integer masterOrSlave, String newVer, int subPackageSeq);

    /**
     * 设置硬件升级完毕
     *
     * @param deviceId
     */
    void upgradeComplete(Integer deviceId);

    /**
     * 更新升级进度
     *
     * @param deviceId
     * @param masterOrSlave
     * @param newVer
     * @param finish
     * @param total
     */
    void updateUpgradeProgress(Integer deviceId, Integer masterOrSlave, String newVer, Integer finish, Integer total);
}
